package com.survey.project.research.service;

import java.util.List;

import com.survey.project.research.domain.Consumer;
import com.survey.project.research.domain.Questionnaire;
import com.survey.project.research.domain.vo.*;

/**
 * 调研问卷Service接口
 * 
 * @author survey
 * @date 2021-05-20
 */
public interface IQuestionnaireService 
{
    /**
     * 查询调研问卷
     * 
     * @param questionnaireId 调研问卷ID
     * @return 调研问卷
     */
    public Questionnaire selectQuestionnaireById(Long questionnaireId);

    /**
     * 查询调研问卷列表
     * 
     * @param questionnaire 调研问卷
     * @return 调研问卷集合
     */
    public List<Questionnaire> selectQuestionnaireList(Questionnaire questionnaire);

    /**
     * 新增调研问卷
     * 
     * @param questionnaire 调研问卷
     * @return 结果
     */
    public int insertQuestionnaire(Questionnaire questionnaire);

    /**
     * 修改调研问卷
     * 
     * @param questionnaire 调研问卷
     * @return 结果
     */
    public int updateQuestionnaire(Questionnaire questionnaire);

    /**
     * 批量删除调研问卷
     * 
     * @param questionnaireIds 需要删除的调研问卷ID
     * @return 结果
     */
    public int deleteQuestionnaireByIds(Long[] questionnaireIds);

    /**
     * 删除调研问卷信息
     * 
     * @param questionnaireId 调研问卷ID
     * @return 结果
     */
    public int deleteQuestionnaireById(Long questionnaireId);

    List<QuestionnaireQuestionListOutVo> researchQuestionnaireQuestionList(Long questionnaireId);

    String importQuestion(List<QuestionnaireQuestionExcelVo> questionList, boolean updateSupport, String operName);

    String importConsumer(List<ConsumerExcelVo> consumerList, boolean updateSupport, String operName);

    List<ConsumerOutVo> researchQuestionnaireConsumerList(Questionnaire questionnaire);

    List<QuestionnaireQuestionListOutVo> consumerQuestions(Long consumerId);

    void consumerCommit(ConsumerAnswerInVo inVo);

    QuestionChoiceListOutVo getChoiceByChoiceId(Long choiceId);

    List<List<String>> getQuestionListByQuestionnaireId(Long questionnaireId);

    List<List<Object>> getConsumerAnswerByQuestionnaireId(Long questionnaireId);

    int changeQuestionnaireStatus(Questionnaire questionnaire);

    QuestionChoiceCheckListOutVo getChoiceCheckByChoiceId(Long choiceId);
}
